package com.whc.gulimall.member.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.whc.common.utils.PageUtils;
import com.whc.common.utils.RRException;
import com.whc.gulimall.member.entity.MemberEntity;
import com.whc.gulimall.member.exception.PhoneExistsException;
import com.whc.gulimall.member.exception.UsernameExistsException;
import com.whc.gulimall.member.vo.LoginVo;
import com.whc.gulimall.member.vo.RegisterVo;
import com.whc.gulimall.member.vo.SocialUserVo;

import java.util.Map;

/**
 * 会员
 *
 * @author wanghaochen
 * @email angaoen@outlook.com
 * @date 2022-03-05 00:23:42
 */
public interface MemberService extends IService<MemberEntity> {

    PageUtils queryPage(Map<String, Object> params);

    /**
     * 注册
     *
     * @param vo vo
     */
    void register(RegisterVo vo);

    /**
     * 检查手机号是否已经存在
     *
     * @param phone 手机号
     * @throws PhoneExistsException 手机号存在异常
     */
    void checkPhoneIsExists(String phone) throws PhoneExistsException;

    /**
     * 检查用户名是否已经存在
     *
     * @param username 用户名
     * @throws UsernameExistsException 用户名存在异常
     */
    void checkUsernameIsExists(String username) throws UsernameExistsException;

    /**
     * 登录
     *
     * @param vo vo
     */
    void login(LoginVo vo);

    /**
     * oauth2登录
     *
     * @param socialUserVo 社交用户登录
     * @return 获取数据
     */
    MemberEntity oauthTwoLogin(SocialUserVo socialUserVo) throws RRException;
}

